一步一步构建Spring5源码
The following article is from Coder小黑 Author 程序员小黑
点击上方"IT牧场",选择"设为星标"
技术干货每日送达!
构建环境
macOS 10.13.6
JDK1.8
IntelliJ IDEA 2018.3.6 (Ultimate Edition)
Spring v5.1.9.RELEASE
Gradle 5.5.1。直接使用brew安装Gradle
brew install gradle
源码构建
源码导入
阅读Spring源码下的 import-into-idea.md 文件可知,需要预先编译
spring-oxm
模块:
Precompile
spring-oxm
with./gradlew :spring-oxm:compileTestJava
修改 gradle/docs.gradle 脚本。一开始尝试直接构建Spring源码,在构建的过程中会报错,通过修改docs.gradle 脚本,注释
dokka
和asciidoctor
。
源码构建。
等了好长好长的时间,终于构建完成了。
在Spring项目中新增一个自己的module,尝试运行hello world,引入spring-context 依赖:
compile(project(":spring-context"))
运行main方法,发现报错
Error:(160, 32) java: 找不到符号 符号: 变量InstrumentationSavingAgent 位置:
网上搜索了一大堆的解决方法,发现都不行。后来看了spring-context的依赖发现,spring-instrument 在 spring-context 中为 optional 依赖:optional(project(":spring-instrument"))
,于是在自己的模块中添加spring-instrument依赖
再次运行main方法,程序运行成功。
ps:令我感到奇怪的是,当我在写这篇总结时,尝试通过移除spring-instrument依赖来复现上述的问题时,发现复现不了了,好神奇。
干货分享
最近将个人学习笔记整理成册,使用PDF分享。关注我,回复如下代码,即可获得百度盘地址,无套路领取!
•001:《Java并发与高并发解决方案》学习笔记;•002:《深入JVM内核——原理、诊断与优化》学习笔记;•003:《Java面试宝典》•004:《Docker开源书》•005:《Kubernetes开源书》•006:《DDD速成(领域驱动设计速成)》•007:全部•008:加技术讨论群
近期热文
•Spring Boot 2.0 迁移指南•阿里巴巴资深技术专家雷卷:值得开发者关注的 Java 8 后时代的语言特性•完美整合Spring Cloud与异构微服务的框架!Spring Cloud Wii开源啦!•每天用SpringBoot,还不懂RESTful API返回统一数据格式是怎么实现的?•实用 Chrome 插件汇总(42个哟!)•盘点10个最难回答的Java面试题
想知道更多?长按/扫码关注我吧↓↓↓